package com.altran.web.forms;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

public class FormularioFiltrosFechasGeneral {
	private Date fechaInicial;
	private Date fechaFinal;
	private List<String> mensajesError;
	
	
	
	public FormularioFiltrosFechasGeneral(HttpServletRequest request) {
		mensajesError = new ArrayList<String>();
		copiarParametros(request);
		validarAtributos(request);
	}
	
	private void copiarParametros(HttpServletRequest request) {
		try {
			SimpleDateFormat Sfmt = new SimpleDateFormat("yyyy-MM-dd");
			Date dtInicial = Sfmt.parse(request.getParameter("fechaInicial"));
			Date dtFinal = Sfmt.parse(request.getParameter("fechaFinal"));
			Sfmt.setLenient(false);
			setFechaInicial(dtInicial);
			setFechaFinal(dtFinal);
		} catch (ParseException exc) {}
	}
	
	private void validarAtributos(HttpServletRequest request) {
		if (getFechaInicial().after(getFechaFinal())) {
			mensajesError.add("La fecha final no puede ser anterior a la fecha inicial");
		}
		/*TODO Controlar si entre fechaInicial y fechaFinal hay mas un 1 mes de diferencia*/
	}
	
	public Date getFechaInicial() {
		return fechaInicial;
	}
	public void setFechaInicial(Date fechaInicial) {
		this.fechaInicial = fechaInicial;
	}
	public Date getFechaFinal() {
		return fechaFinal;
	}
	public void setFechaFinal(Date fechaFinal) {
		this.fechaFinal = fechaFinal;
	}
	public List<String> getMensajesError() {
		return mensajesError;
	}
	public void setMensajesError(List<String> mensajesError) {
		this.mensajesError = mensajesError;
	}
	
}
